home *** CD-ROM | disk | FTP | other *** search
/ Amiga Games: 500 MB Amiga Software / 500 MB Amiga Software - Euber 130 - Amiga Games Disc & Mag.iso / userbox / publicdomain / tinymeter / source / tinymeter_main / volumes.c < prev   
C/C++ Source or Header  |  1995-09-09  |  4KB  |  111 lines

  1. #include "includes.h"
  2.  
  3. char                    *LoadedVolList[64],
  4.                         *LoadedVolList_1[64];
  5. UBYTE                    numofvols;
  6. extern ULONG             all_o_ram[32],
  7.                          bas_o_ram[32],
  8.                          act_o_ram[32];
  9.  
  10. loadvols()
  11. {
  12.     UBYTE   *my_file;
  13.     int     i=0;
  14.     char    temp_str[64];
  15.     numofvols=0;
  16.     my_file=(UBYTE *)Open("ENV:TinyMeter_Volumes",MODE_OLDFILE);
  17.     if(my_file)
  18.     {
  19.         while( FGets(my_file,&temp_str[0],64L) )
  20.         {
  21.             temp_str[63]=0;
  22.             LoadedVolList[numofvols]  =(char *)malloc(64L);
  23.             LoadedVolList_1[numofvols]=(char *)malloc(64L);
  24.             i=0;
  25.             while(temp_str[i]!=0)
  26.             {
  27.                 if(temp_str[i]==10)
  28.                 {
  29.                     temp_str[i]=0;
  30.                     break;
  31.                 }
  32.                 i++;
  33.             }
  34.             strcpy((char *)LoadedVolList[numofvols],(char *)&temp_str[0]);
  35.             strcpy((char *)LoadedVolList_1[numofvols],(char *)&temp_str[0]);
  36.             LoadedVolList_1[numofvols][my_strlen(LoadedVolList_1[numofvols])-1]=0;
  37.             numofvols++;
  38.         }
  39.         LoadedVolList[numofvols]=0L;
  40.         LoadedVolList_1[numofvols]=0L;
  41.         Close(my_file);
  42.     }
  43. }
  44.  
  45. freevols()
  46. {
  47.     ULONG df=0L;
  48.     while(LoadedVolList[df]>0L)
  49.     {
  50.         free(LoadedVolList[df]);
  51.         free(LoadedVolList_1[df]);
  52.         df++;
  53.     }
  54. }
  55.  
  56. getvolsizes(int what)
  57. {
  58.     int    k;
  59.     struct InfoData  inf;
  60.     struct DevProc  *devproc;
  61.     struct DosList  *dl=0;
  62.  
  63.     if(dl = (struct DosList *)LockDosList(LDF_VOLUMES|LDF_DEVICES|LDF_READ));
  64.     {
  65.         for(k=0;k<numofvols;k++)
  66.         {
  67.             if(FindDosEntry(dl,LoadedVolList_1[k],LDF_VOLUMES|LDF_DEVICES))
  68.             {
  69.                 if(devproc=(struct DevProc *)GetDeviceProc(LoadedVolList[k],NULL))
  70.                 {
  71.                     if( DoPkt(devproc->dvp_Port,ACTION_DISK_INFO,MKBADDR(&inf),NULL,NULL,NULL,NULL)==DOSTRUE)
  72.                     {
  73.                         switch(inf.id_DiskType)
  74.                         {
  75.                             case    ID_UNREADABLE_DISK:
  76.                             case    ID_NOT_REALLY_DOS:
  77.                             case    ID_NO_DISK_PRESENT:
  78.                                     act_o_ram[k]=0;
  79.                                     bas_o_ram[k]=0;
  80.                                     all_o_ram[k]=0;
  81.                                     break;
  82.                             default:
  83.                                     switch(what)
  84.                                     {
  85.                                         case    0:
  86.                                                 act_o_ram[k]=(inf.id_NumBlocks-inf.id_NumBlocksUsed)*inf.id_BytesPerBlock;
  87.                                                 break;
  88.                                         case    1:
  89.                                                 bas_o_ram[k]=(inf.id_NumBlocks-inf.id_NumBlocksUsed)*inf.id_BytesPerBlock;
  90.                                                 break;
  91.                                         case    2:
  92.                                                 all_o_ram[k]=inf.id_NumBlocks*inf.id_BytesPerBlock;
  93.                                                 break;
  94.                                     }
  95.                                     if(all_o_ram[k]==0)
  96.                                     {
  97.                                         all_o_ram[k]=inf.id_NumBlocks*inf.id_BytesPerBlock;
  98.                                         bas_o_ram[k]=(inf.id_NumBlocks-inf.id_NumBlocksUsed)*inf.id_BytesPerBlock;
  99.                                     }
  100.                                     break;
  101.                         }
  102.                     }
  103.                     FreeDeviceProc(devproc);
  104.                 }
  105.             }
  106.         }
  107.         UnLockDosList(LDF_VOLUMES|LDF_DEVICES|LDF_READ);
  108.     }
  109. }
  110.  
  111.